<!-- 转账 -->
<template>
	<view>
		<view class="loading-box" v-if="isNoResultData">
			<view>
				<u-loading color="green"></u-loading>
				<text>加载中...</text>
			</view>
		</view>
		<view class="draw-money-wrap" v-else>
			<view v-if="ruleInfo.enable_transfer == 0">
				<view class="nodata-head-box">
					<u-navbar backIconColor="#fff" :borderBottom="false" :background="{ background: 'none' }"
						:backTextStyle="{ color: '#fff', fontSize: '32rpx' }" backText="转账" :isFixed="false"></u-navbar>
				</view>

				<!-- 缺省页 -->
				<shopro-empty :image="$IMG_URL + '/imgs/empty/empty_goods.png'" tipText="暂未开通"></shopro-empty>
			</view>
			<view v-else>
				<view class="head-box">
					<u-navbar backIconColor="#fff" :borderBottom="false" :background="{ background: 'none' }"
						:backTextStyle="{ color: '#fff', fontSize: '32rpx' }" backText="转账" :isFixed="false"></u-navbar>
					<!-- 可转账 -->
					<view class="wallet-num-box u-flex u-col-center u-row-between">
						<view class="">
							<view class="num-title">可转账金额（元）</view>
							<view class="wallet-num">{{ userinfo.money || '0.00' }}</view>
						</view>
						<button class="u-reset-button log-btn"
							@tap="$Router.push({ path: '/pages/user/wallet/transfer-log?type=money' })">转账记录</button>
					</view>
				</view>
				<!-- 转账输入卡片-->
				<view class="draw-card">
					<view class="card-title">转账金额</view>
					<view class="input-box u-flex u-col-center">
						<view calss="unit">￥</view>
						<input class="u-flex-1 u-p-l-10" type="number" @input="onWithdrawInput" v-model="money"
							:placeholder-style="placeholderStyle" placeholder="请输入转账金额" />
					</view>
					<view class="card-title">转账至</view>
					<view class="input-box u-flex u-col-center">
						<input class="u-flex-1 u-p-l-10" style="flex: 3;" v-model="mobile" type="number" :border="true"
							maxlength=11 placeholder="请输入对方手机号或账户ID" />
						<u-button style="flex: 1;" type="success" mode="mini" @tap="getGoodList">搜索</u-button>
					</view>
					<!-- 转账信息 -->
					<view class="bank-info u-m-b-80">
						<view class="u-flex u-col-center goods-list" v-if="customerInfo.mobile">
							<view class="img-box">
								<image class="goods-img" :src="customerInfo.avatar" mode=""></image>
							</view>
							<view class="goods-info u-flex-col u-row-between">
								<view class="goods-title u-ellipsis-1">手机号：{{ customerInfo.mobile }}</view>
								<view class="goods-des u-ellipsis-1">名称：{{ customerInfo.nickname }}</view>
							</view>
						</view>
					</view>
					<button class="u-reset-button save-btn" v-if="customerInfo && customerInfo.mobile"
						@tap="confirmTransfer=true">确认转账</button>
				</view>
				<!-- 转账说明 -->
				<view class="draw-notice">
					<view class="title">转账说明</view>
					<view class="draw-list">1.转账结果请查收对应账户余额；</view>
					<view class="draw-list">2.如有疑问请及时联系客服。</view>
				</view>
				<!-- 转账方式 -->
				<u-popup v-if="ruleInfo && ruleInfo.methods.length" v-model="showWithdrawList" mode="bottom"
					safe-area-inset-bottom :closeable="false" border-radius="30">
					<view class="page_box withdraw-modal">
						<view class="modal-head u-flex u-row-center u-col-center">选择转账方式</view>
						<view class="content_box modal-content">
							<u-radio-group v-model="selectedWithdrawType" activeColor="#A36FFF" wrap>
								<view class="type-item u-p-x-24 u-p-y-30" v-if="ruleInfo.methods.includes(item.value)"
									v-for="(item, index) in withdrawList" :key="index">
									<u-radio shape="circle" iconSize="30" :name="item.value" labelWidth="100%">
										<view class="item-left u-flex u-col-center u-m-l-30">
											<image class="item-img" :src="item.icon" mode=""></image>
											<view class="item-title u-m-l-20">{{ item.title }}</view>
										</view>
									</u-radio>
								</view>
							</u-radio-group>
						</view>
						<view class="modal-bottom"><button class="u-reset-button modal-save-btn"
								@tap="onSaveWithdrawType">确定</button></view>
					</view>
				</u-popup>

				<!-- 确认信息 -->
				<u-popup v-model="confirmTransfer" mode="center" safe-area-inset-bottom :closeable="true"
					border-radius="30">
					<!-- 标题 -->
					<view class="form-box u-p-20">
						<view class="head-title u-flex u-col-center u-row-center">确认转账</view>
						<u-form :model="form.data" :errorType="errorType">
							<u-form-item :labelStyle="labelStyle" label-width="150" label-position="left" label="转账至:">
								<u-input disabled :placeholderStyle="placeholderStyle" v-model="mobile" type="text">
								</u-input>
							</u-form-item>
							<u-form-item :labelStyle="labelStyle" label-width="150" label-position="left" label="金额:">
								<u-input disabled :placeholderStyle="placeholderStyle" v-model="money" type="text">
								</u-input>元
							</u-form-item>
							<u-form-item :labelStyle="labelStyle" label-position="left" label="备注:" prop="card_no"
								label-width="170">
								<u-input placeholder="请输入备注信息" :placeholderStyle="placeholderStyle" v-model="memo"
									type="text"></u-input>
							</u-form-item>
						</u-form>
						<view class="u-flex u-col-center u-row-between">
							<button class="u-reset-button form-cancel-btn u-m-y-40"
								@tap="confirmTransfer = false">取消</button>
							<button class="u-reset-button form-save-btn u-m-y-40" @tap="transfer">确定</button>
						</view>
					</view>
				</u-popup>

				<!-- 绑定修改银行信息 -->
				<u-popup v-model="showBindForm" mode="bottom" safe-area-inset-bottom @close="initForm"
					:closeable="false" border-radius="30">
					<!-- 标题 -->
					<view class="form-box u-p-20">
						<view class="head-title u-flex u-col-center u-row-center">{{ formTitle }}</view>
						<!-- 绑定银行卡 -->
						<u-form v-if="withdrawType === 'bank'" :model="form.data" :rules="form.bankRules" ref="bank"
							:errorType="errorType">
							<u-form-item :labelStyle="labelStyle" label-width="150" label-position="left" label="持卡人:"
								prop="real_name">
								<u-input placeholder="请输入持卡人" :placeholderStyle="placeholderStyle"
									v-model="form.data.real_name" type="text"></u-input>
							</u-form-item>
							<u-form-item :labelStyle="labelStyle" label-width="150" label-position="left" label="开户行:"
								prop="bank_name">
								<u-input placeholder="请输入开户行" :placeholderStyle="placeholderStyle"
									v-model="form.data.bank_name" type="text"></u-input>
							</u-form-item>
							<u-form-item :labelStyle="labelStyle" label-position="left" label="银行卡号:" prop="card_no"
								label-width="150">
								<u-input placeholder="请输入银行卡号" :placeholderStyle="placeholderStyle"
									v-model="form.data.card_no" type="number"></u-input>
							</u-form-item>
						</u-form>
						<!-- 绑定支付宝 -->
						<u-form v-if="withdrawType === 'alipay'" :model="form.data" :rules="form.aliPayRules"
							ref="alipay" :errorType="errorType">
							<u-form-item :labelStyle="labelStyle" label-width="150" label-position="left" label="真实姓名:"
								prop="real_name">
								<u-input placeholder="请输入真实姓名" :placeholderStyle="placeholderStyle"
									v-model="form.data.real_name" type="text"></u-input>
							</u-form-item>
							<u-form-item :labelStyle="labelStyle" label-position="left" label="支付宝账号:" prop="card_no"
								label-width="170">
								<u-input placeholder="请输入支付宝账号" :placeholderStyle="placeholderStyle"
									v-model="form.data.card_no" type="text"></u-input>
							</u-form-item>
						</u-form>
						<view class="u-flex u-col-center u-row-between">
							<button class="u-reset-button form-cancel-btn u-m-y-40"
								@tap="showBindForm = false">取消</button>
							<button class="u-reset-button form-save-btn u-m-y-40" @tap="saveForm">确定</button>
						</view>
					</view>
				</u-popup>

				<!-- modal -->
				<u-modal ref="uModal" v-model="showModal" :show-cancel-button="true" confirm-color="#7063D2"
					cancel-color="#666666" @confirm="$Router.push('/pages/user/wallet/transfer-log')"
					confirm-text="查看记录" cancel-text="继续转账" content="您的转账已提交" title="操作成功"></u-modal>



				<!-- 密码键盘 -->
				<pwd-keyboard v-if="iSPwdKeyboard" title="安全键盘" @success="walletPay" @close="iSPwdKeyboard=false" />

				<!-- 设置密码 -->
				<shopro-auth-modal></shopro-auth-modal>
			</view>
		</view>
	</view>

</template>

<script>
	import {
		mapState,
		mapActions
	} from 'vuex';
	import FormValidate from '@/shopro/validate/form';
	import wechat from '@/shopro/wechat/wechat';
	import pwdKeyboard from '../../order/components/pwd-keyboard'
	export default {
		components: {
			pwdKeyboard
		},
		data() {
			return {
				showModal: false,
				iSPwdKeyboard: false,
				isNoResultData: true,
				mobile: '',
				memo: '',
				money: '', //转账金额
				ruleInfo: '', //转账规则
				formTitle: '',
				withdrawType: '',
				showBindForm: false,
				confirmTransfer: false,
				selectedWithdrawType: '',
				withdrawInfo: {}, //转账信息
				customerInfo: {},
				showWithdrawList: false,
				withdrawList: {
					bank: {
						icon: this.$IMG_URL + '/imgs/wallet/bank_type.png',
						title: '银行卡转账',
						value: 'bank'
					},
					wechat: {
						icon: this.$IMG_URL + '/imgs/wallet/wx_type.png',
						title: '微信零钱',
						value: 'wechat'
					},
					alipay: {
						icon: this.$IMG_URL + '/imgs/wallet/ali_type.png',
						title: '支付宝账户',
						value: 'alipay'
					}
				},
				// 表单样式
				errorType: ['message'],
				labelStyle: {
					'font-size': '30rpx',
					'font-weight': '500',
					color: '#333'
				},
				placeholderStyle: 'font-size: 30rpx; font-weight: 500;color:#C2C7CF;',
				form: {
					data: {
						real_name: '',
						bank_name: '',
						card_no: ''
					},
					bankRules: {
						real_name: FormValidate.realName,
						bank_name: FormValidate.bankName,
						card_no: FormValidate.bankCode
					},
					alipayRules: {
						real_name: FormValidate.realName,
						card_no: FormValidate.alipayAccount
					}
				}
			};
		},
		computed: {
			...mapState({
				userinfo: ({
					user
				}) => user.userInfo
			})
		},
		async onLoad() {
			this.getWithdrawRules();
		},
		methods: {
			...mapActions('user', ['showAuthModal']),
			getGoodList() {
				let that = this;
				that.loadStatus = 'loading';
				that.$http('agent.customer', {
					mobile: that.mobile
				}).then(res => {
					if (res.code === 1) {
						that.customerInfo = res.data;
					} else {
						that.customerInfo = {};
					}
				});
			},
			// 确认转账方式
			onSaveWithdrawType() {
				this.withdrawType = this.selectedWithdrawType;
				this.showWithdrawList = false;
				this.getWithdrawInfo();
			},
			async bindThirdOauth() {
				let that = this;
				wechat.bind();
				that.getWithdrawInfo();
			},
			// 转账检验
			onWithdrawInput(e) {
				let sVal = String(e.detail.value);
				sVal = sVal.replace(/\b(0+)/gi, '');
				sVal = sVal.replace(/[^\d]/g, '');
				this.money = sVal;
			},
			// 转账
			transfer() {
				const that = this;
				that.confirmTransfer = false
				if (this.money <= 0) {
					this.$u.toast('请输入转账金额');
					return;
				}
				if (!this.customerInfo.mobile) {
					this.$u.toast('请输入对方账户手机号');
					return;
				}

				this.$http('user.info').then(res => {
					if (!res.data.pay_pwd || res.data.pay_pwd.length == 0) {
						that.showAuthModal('setPayPwd')
					} else {
						that.iSPwdKeyboard = true
					}
				})


			},
			// 密码输入完成
			walletPay(paypwd) {
				let that = this
				that.$http(
					'money.transferApply', {
						customerId: that.customerInfo.id,
						money: that.money,
						memo: that.memo,
						type: 'money',
						paypwd
					},
					'申请中...',
					false
				).then(res => {
					that.iSPwdKeyboard = false
					if (res.code === 1) {
						that.money = '';
						that.showModal = true;
						that.$store.dispatch('user/getUserInfo');
					} else {
						that.$u.toast(res.msg);
					}
				});
			},
			initForm() {
				this.form.data = {
					real_name: '',
					bank_name: '',
					card_no: ''
				};
			},

			// 绑定,修改
			toBind() {
				this.showBindForm = true;
				this.form.data = {
					...this.form.data,
					...this.withdrawInfo
				};
				switch (this.withdrawType) {
					case 'bank':
						this.formTitle = this.withdrawInfo ? '修改银行卡' : '添加银行卡';
						this.$nextTick(() => {
							this.$refs.bank.setRules(this.form.bankRules);
						});
						break;
					case 'alipay':
						this.formTitle = this.withdrawInfo ? '修改支付宝' : '添加支付宝';
						this.$nextTick(() => {
							this.$refs.alipay.setRules(this.form.alipayRules);
						});
						break;
					default:
						break;
				}
			},
			// 确认提交表单
			saveForm() {
				cosnole.log('确认提交表单')
				let that = this;
				this.$refs[this.withdrawType].validate().then(res => {
					if (res) {
						that.$http(
							'money.bankEdit', {
								type: that.withdrawType,
								...that.form.data
							},
							'提交中...'
						).then(res => {
							if (res.code === 1) {
								that.showBindForm = false;
								that.$u.toast(res.msg);
								that.initForm();
								that.getWithdrawInfo();
							}
						});
					}
				});
			},
			// 转账规则
			getWithdrawRules() {
				let that = this;
				that.$http('money.walletRule').then(res => {
					this.isNoResultData = false;
					if (res.code === 1) {
						that.ruleInfo = res.data;
						that.selectedWithdrawType = that.ruleInfo.methods[0];
					}
				});
			},
			// 获取转账信息
			getWithdrawInfo() {
				let that = this;
				that.$http(
					'money.bankInfo', {
						type: that.withdrawType
					},
					'',
					false
				).then(res => {
					that.withdrawInfo = res.code === 1 ? res.data : null;
				});
			}
		}
	};
</script>

<style lang="scss">
	.loading-box {
		display: flex;
		justify-content: center;
		align-items: center;
		position: fixed;
		left: 0;
		right: 0;
		top: 0;
		bottom: 0;
	}
	
	.nodata-head-box{
		background: url($IMG_URL+'/imgs/user/draw_money_head_bg.png') no-repeat;
		padding-bottom: var(--status-bar-height);
	}

	.head-box {
		background: url($IMG_URL+'/imgs/user/draw_money_head_bg.png') no-repeat;
		background-size: 100% auto;
		min-height: 400rpx;
		padding-bottom: var(--status-bar-height);

		// 可转账
		.wallet-num-box {
			padding: 20rpx 40rpx 0;

			.num-title {
				font-size: 26rpx;
				font-weight: 500;
				color: #ffffff;
				margin-bottom: 20rpx;
			}

			.wallet-num {
				font-size: 60rpx;
				font-weight: 500;
				color: #ffffff;
			}

			.log-btn {
				width: 170rpx;
				height: 60rpx;
				line-height: 60rpx;
				background: rgba(255, 255, 255, 0.1);
				border: 1rpx solid #eeeeee;
				border-radius: 30rpx;
				padding: 0;
				font-size: 26rpx;
				font-weight: 500;
				color: #ffffff;
			}
		}
	}

	// 转账输入卡片
	.draw-card {
		background-color: #fff;
		border-radius: 20rpx;
		width: 690rpx;
		min-height: 530rpx;
		margin: -70rpx auto 0;
		padding: 30rpx;

		.card-title {
			font-size: 30rpx;
			font-weight: 500;
			color: #333333;
			margin-bottom: 30rpx;
		}

		.input-box {
			width: 624rpx;
			border-bottom: 1rpx solid #eee;
			height: 100rpx;
			margin-bottom: 40rpx;

			.unit {
				font-size: 48rpx;
				color: #333;
			}
		}

		.bank-box {
			.name {
				font-size: 28rpx;
				font-weight: 500;
				color: #333333;
			}

			.bank-list {
				.empty-text {
					font-size: 28rpx;
					font-weight: 400;
					color: #999999;
				}

				.sel-box {
					.item-img {
						width: 36rpx;
						height: 36rpx;
					}

					.item-title {
						font-size: 28rpx;
						color: #333333;
					}
				}
			}
		}

		.bank-info {
			height: 50rpx;
			font-size: 28rpx;
			font-weight: 400;
			color: #999999;

			.bank-info-title {
				width: 500rpx;
			}

			.bind-btn {
				padding: 0 20rpx;
				line-height: 50rpx;
				background: #f5f6f8;
				border-radius: 20rpx;
				color: #999;
			}
		}

		.save-btn {
			width: 616rpx;
			height: 86rpx;
			line-height: 86rpx;
			background: linear-gradient(-90deg, #a36fff, #5336ff);
			box-shadow: 0px 7rpx 11rpx 2rpx rgba(124, 103, 214, 0.34);
			border-radius: 43rpx;
			font-size: 30rpx;
			font-weight: 500;
			color: #ffffff;
		}
	}

	// 转账说明
	.draw-notice {
		width: 684rpx;
		height: 327rpx;
		background: #ffffff;
		border-radius: 20rpx;
		padding: 30rpx 35rpx;
		margin: 20rpx auto;

		.title {
			font-size: 30rpx;
			font-weight: 500;
			color: #333333;
			margin-bottom: 30rpx;
		}

		.draw-list {
			font-size: 24rpx;
			font-weight: 400;
			color: #999999;
			margin-bottom: 10rpx;
		}
	}

	// 转账费方式
	.withdraw-modal {
		min-height: 600rpx;
		background-color: #fff;

		.modal-head {
			height: 80rpx;
			font-size: 30rpx;
			font-weight: 600;
			color: #333333;
			border-bottom: 1rpx solid rgba(#dfdfdf, 0.5);
		}

		.modal-content {
			.type-item {
				height: 100rpx;
				border-bottom: 1rpx solid rgba(#dfdfdf, 0.5);
				width: 750rpx;

				.item-img {
					width: 36rpx;
					height: 36rpx;
				}

				.item-title {
					font-size: 28rpx;
					color: #333333;
				}
			}
		}

		.modal-bottom {
			padding: 30rpx;

			.modal-save-btn {
				width: 690rpx;
				height: 80rpx;
				line-height: 80rpx;
				background: linear-gradient(90deg, #a36fff, #5336ff);
				box-shadow: 0 7rpx 11rpx 2rpx rgba(124, 103, 214, 0.34);
				border-radius: 40rpx;
				font-weight: 500;
				color: #ffffff;
			}
		}
	}

	// 绑定
	.form-box {
		.head-title {
			height: 100rpx;
			font-size: 34rpx;
			font-weight: 600;
		}
	
	.form-save-btn {
			width: 340rpx;
			height: 80rpx;
			line-height: 80rpx;
			background: linear-gradient(90deg, #a36fff, #5336ff);
			box-shadow: 0 7rpx 11rpx 2rpx rgba(124, 103, 214, 0.34);
			border-radius: 40rpx;
			font-weight: 500;
			color: #ffffff;
		}

		.form-cancel-btn {
			width: 340rpx;
			height: 80rpx;
			line-height: 80rpx;
			border: 1rpx solid #999;
			border-radius: 40rpx;
			font-weight: 500;
			color: #999;
		}
	}

	.goods-list {
		border-bottom: 1rpx solid rgba(#dfdfdf, 0.5);
		position: relative;

		.img-box {
			margin-right: 30rpx;

			.goods-img {
				width: 80rpx;
				height: 80rpx;
			}
		}

		.goods-info {
			align-items: flex-start;
			height: 100rpx;

			.goods-title {
				width: 400rpx;
				font-size: 28rpx;
				font-weight: 500;
				color: #333333;
				margin-bottom: 10rpx;
			}

			.goods-des {
				width: 400rpx;
				font-size: 22rpx;
				font-weight: 500;
				color: #a8700d;
				margin-bottom: 10rpx;
			}

			.goods-price {
				margin-bottom: 10rpx;

				.price {
					font-size: 28rpx;
					font-weight: 500;
					color: #333333;
					margin-right: 16rpx;
				}

				.origin-price {
					font-size: 24rpx;
					font-weight: 400;
					text-decoration: line-through;
					color: #999999;
				}
			}

			.commission-num {
				font-size: 24rpx;
				font-weight: 500;
				color: #5e4ddf;
			}
		}
	}
</style>
